package com.Sep_thirty;

import java.util.Arrays;

/**
 * 670. 最大交换
 * 给定一个非负整数，你至多可以交换一次数字中的任意两位。返回你能得到的最大值。
 */


/**
 * 需要温故而知新
 */
public class Solution670 {

    /**
     * 先确定最大值的下标，然后遍历一边确定更换
     * @param num
     * @return
     */
    public static int maximumSwap(int num) {
        if (num==0) return 0;
        char[] chars=String.valueOf(num).toCharArray();
        int[] maxIndex=new int[chars.length];
        int max=chars.length-1;
        for (int i=chars.length-1;i>=0;i--)
        {
            if (chars[i]-'0'>chars[max]-'0')
            {
                max=i;
            }
            maxIndex[i]=max;
        }
        System.out.println(Arrays.toString(maxIndex));
        for (int i=0;i<chars.length;i++)
        {
            int iValue=chars[i]-'0';
            int maxValue=chars[maxIndex[i]]-'0';
            System.out.println(Arrays.toString(chars));
            if (iValue!=maxValue)
            {
                chars[i]=(char) (maxValue+'0');
                chars[maxIndex[i]]=(char) (iValue+'0');
                break;
            }
        }
        return Integer.parseInt(new String(chars));
    }

    public static void main(String[] args) {
        System.out.println(maximumSwap(9973));
    }

}
